#pragma once
#include <boost/array.hpp>
#include "TextureAtlasInfo.hpp"

namespace he
{
	//! Splat info.
	class TerrainTileSplat : boost::noncopyable
	{
		// Constants
	private:
		//! Max splat type variants.
		static unsigned short const MAX_SPLAT_TYPE_VARIANT_SIZE = 8;

		// Typedefs
	private:
		//! Vector of tile splat TileTypeInfo_t tuple.
		typedef boost::array<TextureAtlasInfo_t, MAX_SPLAT_TYPE_VARIANT_SIZE> TileSplatIndexInfoVector_t;
				
		// Attributes
	private:
		//! Vector of texture coordinates of given splat tile. Index is splatting sub-type(1..15).
		TileSplatIndexInfoVector_t m_TileSplatTileInfoMap;

		// Operations
	public:
		//! Add new splatting info.
		void add_splat(unsigned short SplatIndex, TextureAtlasInfo_t const &Info);
		//! Get splat info.
		TextureAtlasInfo_t const &get_info(unsigned short SplatIndex) const;

	public:
		TerrainTileSplat(void);
		~TerrainTileSplat(void);
	};
} /*he*/
